<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>可变类型</title>
    <script>
        /*
        之前学习的Number、String、Boolean、Null、Undefined这些数据类型都属于与不可变类型
            数据的值是没有办法修改的，可以修改的只是变量，只能通过变量来重新赋值，来达到修改的目的
        */
        // var a = 10;
        // var b = a;
        // a++会使原来的变量自增1，属于“改变量”，修改一个变量时，不会影响其他的变量
        // 修改一个变量的值时，不会影响到其他变量
        // a++;
        // console.log('a =',a); // 11
        // console.log('b =',b); // 10

        //修改对象时，会影响到所有的指向该对象的变量
        var o1 = {};
        o1.name = 'swk';
        var o2 = o1;
        o1.name = 'zbj';
        o2.name = 'shs';

        console.log(o1);
        console.log(o2);

        /*
            注意：
                '改变量'，只会影响变量自身，不会影响到其他变量
                    - 会导致变量发生变化的情况：
                        1.使用赋值运算符为变量重新赋值：
                            a = 10;
                            b += 10;
                            b *= 10;
                        2.使用自增或自减
                            a++
                            ++a
                            a--
                            --a
                '改对象'，会影响到所有的指向该对象的变量
         */

        var c = 10;
        var d = c;
        c--; // 是否会影响变量d？

        var e = {};
        var f = e;
        f.name = '猪八戒'; // 是否会影响变量e
        f = {}; // 是否会影响变量e

        var o3 = {};
        var o4 = {};
        o4.name = '猪八戒'; // 会不会影响o3
    </script>
</head>
<body>

</body>
</html>